package org.jiajie.coffeecodes.sp.beans.factory;

import org.jiajie.coffeecodes.sp.beans.BeansException;

/**
 * @author jay
 */
public interface BeanFactory {

    Object getBean(String name) throws BeansException;

    /**
     * BeanFactory 中我们重载了一个含有入参信息 args 的 getBean 方法，
     * 这样就可以方便的传递入参给构造函数实例化了
     */
    Object getBean(String name, Object... args) throws BeansException;

    <T> T getBean(String name, Class<T> requireType) throws BeansException;

    <T> T getBean(Class<T> requiredType) throws BeansException;
}
